# Как использовать

## With Dependency Injection
_Конфигурация с использованием контейнера зависимостей_

__Конфигурация DI:__
```php
<?php
declare(strict_types=1);

$containerBuilder = new DI\ContainerBuilder();

// конфигурация контейнера зависимостей
$containerBuilder->addDefinitions([
        // Переменные из файла окружения
        'arEnv' => $_ENV,

        // Обертка над переменными окружения
        \Umserv\OpenApi\Core\Environment::class => DI\factory(function(\Psr\Container\ContainerInterface $c) {
            return new \Umserv\OpenApi\Core\Environment($c->get('arEnv'));
        }),

        // Модели ответов
        \Umserv\ExchangeInterfaces\V1\Helpers\HttpResponse::class =>  \Umserv\ExchangeInterfaces\V1\Helpers\HttpResponse::getInstance(),

        // Заглушка для модели ответа
        \Psr\Http\Message\ResponseInterface::class => DI\factory(function(\Psr\Container\ContainerInterface $c) {
            // имплементация Psr7 стандарта для Response 
            return new GuzzleHttp\Psr7\Response();
        }),
]);

$container = $containerBuilder->build();

// TODO: Интегрируем контейнер в приложение ...

```

__Класс контроллера:__
```php
<?php
declare(strict_types=1);

class AnyController {
    
    // конструктор класса контроллера
    public function __construct(
        // класс окружение
        readonly protected \Umserv\OpenApi\Core\Environment $env,
        
        // хелпер для работ с ответами Http
        readonly protected \Umserv\ExchangeInterfaces\V1\Helpers\HttpResponse $httpResponseHandler
    ){}
    
    // метод контроллера
    public function AnyMethod(
        \Psr\Http\Message\ServerRequestInterface $request,
        \Psr\Http\Message\ResponseInterface $response,
        array $arg
    ): \Psr\Http\Message\ResponseInterface {
        try {
            //region
            // TODO: some logic here ...
            //endregion
            
            // ❗ ️Конфигурируем ответ 👇
            
            // класс модель-ответа web-сообщения
            $dataResponse = new \Umserv\ExchangeInterfaces\V1\Core\Http\Response();
            
            // записываем данные
            $dataResponse->data = [
                '👋🏿Hello world!👋'
            ];
            
            // устанавливаем код статуса ответа 201
            $dataResponse->code = 201;

            // возвращаем успешный ответ
            return $this->httpResponseHandler->SuccessResponse($dataResponse,$response);
        
        }catch (\Exception $e){
            // возвращаем ответ с ошибкой
            return $this->httpResponseHandler->ErrorResponse($e,$response);
        }
    }
}
```
---